<!DOCTYPE html>
<html>
<head>
	<title>Validate Events</title>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
	<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
	<link rel="stylesheet" type="text/css" href="../../../codebase/fonts/font_roboto/roboto.css"/>
	<link rel="stylesheet" type="text/css" href="../../../codebase/dhtmlx.css"/>
	<script src="../../../codebase/dhtmlx.js"></script>
	<style>
		div#simpleLog {
			width: 500px;
			height: 200px;
			font-family: Roboto, Arial, Helvetica;
			font-size: 14px;
			color: #404040;
			overflow: auto;
		}
		/* custom css for validate */
		.validate_magenta .dhxform_label,
		.validate_magenta .dhxform_select {
			color: magenta !important;
		}
		.validate_orange .dhxform_label,
		.validate_orange .dhxform_select {
			color: orange !important;
		}
	</style>
	<script>
		var myForm, formData, logObj;
		var customCss = {video_bitrate: "validate_magenta", video_codec: "validate_orange"};
		function doOnLoad() {
			formData = [
				{type: "settings", position: "label-left", labelWidth: 120, inputWidth: 160},
				{type: "label", label: "New project"},
				{type: "input", name: "project_name", label: "Project Name", value: "New project", validate:"NotEmpty"},
				{type: "label", label: "Audio settings"},
				{type: "select", name: "audio_format", label: "Format", validate: "ValidTime", options:[
					{text: "AAC", value: "AAC"},
					{text: "AC3", value: "AC3", selected: true},
					{text: "MP3", value: "MP3"},
					{text: "FLAC", value: "FLAC"}
				]},
				{type: "select", name: "audio_bitrate", label: "Bitrate", validate: "ValidTime", options:[
					{text: "128 kbps", value: "128"},
					{text: "160 kbps", value: "160"},
					{text: "256 kbps", value: "256"},
					{text: "320 kbps", value: "320", selected: true},
					{text: "448 kbps", value: "448"}
				]},
				{type: "select", name: "audio_channels", label: "Channels", validate: "ValidTime", options:[
					{text: "2.0 Stereo", value: "2_0"},
					{text: "5.1 Dolby Digital", value: "5_1", selected: true}
				]},
				{type: "label", label: "Video settings"},
				{type: "select", name: "video_codec", label: "Codec", validate: "NotEmpty", options:[
					{text: "DivX", value: "DivX"},
					{text: "XviD", value: "XviD", selected: true}
				]},
				{type: "select", name: "video_bitrate", label: "Bitrate", validate: "ValidTime", options:[
					{text: "728 kbps", value: "728"},
					{text: "1226 kbps", value: "1226", selected: true},
					{text: "2412 kbps", value: "2412"}
				]},
				{type: "label", label: "Advanced"},
				{type: "input", label: "Command line options", rows: 2, value: "-vf crop=618:526:0:14,pp=lb"},
				{type: "label", label: "Backup Control"},
				{type: "checkbox", label: "Create local backup", position: "label-right", list:[
					{type: "input", label: "Path", value: "/home/nakamuro/backups/"}
				]},
				{type: "checkbox", label: "Copy backup to server", position: "label-right", list:[
					{type: "input", label: "Login", value: "nakamuro"},
					{type: "password", label: "Password", value: "123"}
				]},
				{type: "block", inputWidth: "auto", list:[
					{type: "button", value: "Validate", name: "doFormValidate"},
					{type: "newcolumn"},
					{type: "button", value: "Clear", name: "resetValidateData"}
				]}
			];
			myForm = new dhtmlXForm("myForm", formData);
			myForm.attachEvent("onButtonClick", function(name){
				window[name]();
			});
			myForm.attachEvent("onBeforeValidate",function(){
				logEvent("onBeforeValidate called<br>");
			});
			myForm.attachEvent("onAfterValidate",function(status){
				logEvent("onAfterValidate called, status: "+(status?"true":"false")+"<br>");
			});
			myForm.attachEvent("onValidateSuccess", doCustomCss);
			myForm.attachEvent("onValidateError", doCustomCss);
		}
		function doFormValidate() {
			myForm.validate();
		}
		function resetValidateData() {
			myForm.resetValidateCss();
		}
		function doCustomCss(name,value,res){
			if (name == "video_codec" || name == "video_bitrate") {
				var css = customCss[name];
				myForm.setValidateCss(name, res, css);
				logEvent("onValidate"+(res?"Success":"Error")+" called, item '"+name+"', applynig custom css '"+css+"'<br>");
				return false;
			} else {
				logEvent("onValidate"+(res?"Success":"Error")+" called, item '"+name+"'<br>");
			}
		}
		function logEvent(t) {
			if (!logObj) logObj = document.getElementById("simpleLog");
			logObj.innerHTML += t;
		}
		function clearLog() {
			if (!logObj) logObj = document.getElementById("simpleLog");
			logObj.innerHTML = "";
		}
	</script>
</head>
<body onload="doOnLoad();">
	<table>
		<tr><td><div id="myForm"></div></td></tr>
		<tr><td><b>Log (<a href="javascript:void(0);" onclick="clearLog();">clear</a>)</b></td></tr>
		<tr><td><div id="simpleLog"></div></td></tr>
	</table>
</body>
</html>